iT邦幫忙

2023 iThome 鐵人賽

DAY 7
1

因為這次寫的功能中有:

  1. 爬ptt資訊
  2. 推送訊息到line
    如果功能一多時直接上排程跑,中間有任一功能傳有誤(ex.request ptt資訊的api回傳資訊有誤 or line推送失敗)
    除了要查問題比較費時之外,使用單元測試先測試code則可以更清楚的知道到底是執行到
    哪一段有問題

這邊使用unittest來測試get_data跟postToLine這兩個功能的回傳資料:

  1. 長度是否不為0
  2. 回傳狀態是否為200
    代碼如下:
import unittest
from unittest.mock import patch
import oil_notify

class TestMyModule(unittest.TestCase):
    def test_get_data(self):
        # print(f'url:{oil_notify.url}')
        data = oil_notify.get_data(oil_notify.url)
        self.assertTrue(len(data) > 0)

    @patch('oil_notify.requests.post')
    def test_postToLine(self, mock_post):
        token = oil_notify.token
        data = oil_notify.data
        
        # 創建模擬的 Response 對象
        mock_response=oil_notify.requests.Response()
        mock_response.status_code = 200
        mock_response._content = b'Success'  # _content 是模擬 HTTP response 的內容
        
        mock_post.return_value = mock_response

        resp = oil_notify.postToLine(token, data)
        self.assertEqual(resp.status_code, 200)
        self.assertEqual(resp.text, 'Success')

if __name__ == '__main__':
    unittest.main()

附圖對照:
https://ithelp.ithome.com.tw/upload/images/20230917/20163056SUQP2KRXtK.png

先使用單元測試檢查各功能沒問題後,再推到actions執行排程


上一篇
gitHub actions yaml檔-on workflow_dispatch啟用設定&jupyterbook設定方式
下一篇
寫個爬104工作的爬蟲
系列文
定期推送油價通知到Line上的訊息通知,並使用GitLab CI排程搭配Google Colab16
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言